import bpy

from 全局控制.Node.数据编辑.物体 import bl_修改器公共选项

import 全局控制.Node.节点和插座基类.bl_节点基类 as 基类
from 节点.Core import bl_UI配色

import engine.initLIB.load_dll as engineLib
import ctypes








def f_update_修改器可视(self, context):
	
	pass

def f_update_修改器可渲(self, context):
	
	pass





E_粒子文件类型枚举 = [
	("bphys", "*.bphys", "", 0),
	("fluidsurface_particles", "*.fluidsurface_particles", "", 1),
]

def f_update_粒子缓存导出路径(self, context):
	data = (list('path'), list(bpy.path.abspath(self.m_路径)))
	engineLib.flexCAPI.f_node_传入BL数据(ctypes.c_wchar_p(self.id_data.name), ctypes.c_wchar_p(self.name), ctypes.py_object(data));

def f_update_粒子缓存导出名称(self, context):
	data = (list('name'), list(self.m_名称))
	engineLib.flexCAPI.f_node_传入BL数据(ctypes.c_wchar_p(self.id_data.name), ctypes.c_wchar_p(self.name), ctypes.py_object(data));

def f_update_粒子缓存导出类型(self, context):
	data = (list('type'), list(self.m_类型))
	engineLib.flexCAPI.f_node_传入BL数据(ctypes.c_wchar_p(self.id_data.name), ctypes.c_wchar_p(self.name), ctypes.py_object(data));
	
class C_Node_导出bl粒子缓存节点(基类.C_Node_基类):
	bl_dname = 'bl_node_导出bl粒子缓存节点'
	bl_label = '导出bl粒子缓存节点'
	
	m_路径 = bpy.props.StringProperty(name="路径", default='', update=f_update_粒子缓存导出路径, subtype='DIR_PATH')
	m_名称 = bpy.props.StringProperty(name="名称", default='', update=f_update_粒子缓存导出名称)
	m_类型 = bpy.props.EnumProperty(items=E_粒子文件类型枚举, name="类型", default="fluidsurface_particles", update=f_update_粒子缓存导出类型)
	#m_编号 = bpy.props.IntProperty(default=0)
	#m_是否渲染 = bpy.props.BoolProperty(default=True, update=f_update_修改器可渲)
	#m_是否更新后释放数据 = bpy.props.BoolProperty(default=False, update=f_update更新后释放数据)
	def init(self, context):
		super(C_Node_导出bl粒子缓存节点, self).f_init(context)
		self.inputs.new('C_NodeSocket_粒子系统', name='粒子')
		self.inputs.new('C_Socket_I32', name='编号')
		self.f_toCPP()
		
	def draw_buttons(self, context, layout):
		layout.prop(self, 'm_路径')
		row = layout.row(align=True)
		row.prop(self, 'm_类型')
		if self.m_类型 != 'fluidsurface_particles':
			row.prop(self, 'm_名称')
		
	def f_toCPP(self):
		engineLib.flexCAPI.f_创建导出bl粒子缓存节点(ctypes.c_wchar_p(self.id_data.name), ctypes.c_wchar_p(self.name), self.f_getPyObject());
		f_update_粒子缓存导出路径(self, None)
		f_update_粒子缓存导出名称(self, None)
		f_update_粒子缓存导出类型(self, None)
		self.use_custom_color = True
		self.color = bl_UI配色.g_内部节点颜色
		
class C_NODE_MENU_导出bl粒子缓存节点(bpy.types.Operator):
	bl_idname = 'node.global_node_export_bl_particle_caches'
	bl_label = '导出bl粒子缓存节点'
	bl_options = {'REGISTER', 'UNDO'}
	def execute(operator, context):
		bpy.ops.node.add_node(type='C_Node_导出bl粒子缓存节点', use_transform=True)
		return {'FINISHED'}







classes = (
	#C_Node_粒子设置修改器,
	#C_NODE_MENU_粒子设置修改器,
	
	C_Node_导出bl粒子缓存节点,
	C_NODE_MENU_导出bl粒子缓存节点,
	
)

def register():
	for c in classes:
		bpy.utils.register_class(c)
		
def unregister():
	for c in classes:
		bpy.utils.unregister_class(c)






